package com.woniu.order.service;

import com.woniu.common.dto.ForOrderProductDTO;
import com.woniu.common.dto.OrderDto;
import com.woniu.common.dto.OrderInquiryDto;
import com.woniu.common.utils.PageParam;
import com.woniu.common.utils.ResponseData;
import com.woniu.order.dto.PayOrderDTO;
import com.woniu.order.pojo.ZyOrder;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
* @author lenovo
* @description 针对表【zy_order】的数据库操作Service
* @createDate 2024-08-07 16:00:36
*/
public interface ZyOrderService extends IService<ZyOrder> {

    ResponseData<?> queryAllOrder(PageParam<OrderDto> param);

    /**
     * 条件查询所有的订单信息
     * @param params
     * @return
     */
    ResponseData<?> selectAllOrder(PageParam<OrderInquiryDto> params);

    /**
    * @description:异步下单的方法
    * @param: null
    * @return:
    * @author ltyipx
    * @date 2024/8/9 9:39
    */
    void addOrder(String userId, String orderId, List<ForOrderProductDTO> products);

    /**
    * @description:延时对列监控订单状态，如果没付款，则取消订单
    * @param: null
    * @return:
    * @author ltyipx
    * @date 2024/8/9 16:42
    */
    void handleOrderStatus(String userId, String orderId);

    /**
     * 查询订单详情信息
     * @param orderId
     * @return
     */
    ResponseData<?> selOrderDetail(String orderId);

    /***
     * 用户付款订单的方法
     * @param payOrderDTO
     * @return
     */
    ResponseData<?> payOrder(PayOrderDTO payOrderDTO);

    /***
     * 用户根据订单状态查询自己的订单
     * @param state
     * @return
     */
    ResponseData<?> queryOrderByExample(Integer state);


    ResponseData<?> queryPayCustomNumber();

    ResponseData<?> payMoneyNumber();

    ResponseData<?> isGoingToPay();

    ResponseData<?> isGoingToFahuo();

    ResponseData<?> queryAllDateForEcharts();
    /**
    * @description:查询物流信息
    * @param: null
    * @return:
    * @author ltyipx
    * @date 2024/8/16 15:11
    */
    ResponseData<?> queryLogisticsByOrderDetailId(String orderDetailId);

    /**
    * @description:用户确认收货
    * @param: null
    * @return:
    * @author ltyipx
    * @date 2024/8/16 17:02
    */
    ResponseData<?> confirmOrder(String orderDetailId);
}
